Micron Document
ouroboros git

Node / public / modem73 rns://4cf8a0651c4d73cacd0f93ac1d95e80a/public/modem73


-─

<p align="center">
<picture>
<source media="(prefers-color-scheme: dark)" srcset="https://i.ibb.co/LDNR23jg/MODEM73-white.png">
<source media="(prefers-color-scheme: light)" srcset="https://i.ibb.co/wZKznzrF/MODEM73-blk.png">
<img alt="MODEM73" src="https://i.ibb.co/wZKznzrF/MODEM73-blk.png">
</picture>
</p>


MODEM73 is an open source software modem that works with any HF, VHF, or UHF radio capable of 2400 Hz of bandwidth. All you need is a sound card and audio cable for your radio.

<table align="center">
<tr>
<td align="center"><img height="200" alt="modem73 on a UV-K6 with AIOC" src="https://github.com/user-attachments/assets/7180ab80-4386-4ee1-8029-42ca5300ef13" /></td>
<td align="center"><img height="200" alt="modem73 on a Xiegu X6100 with Armbian" src="https://github.com/user-attachments/assets/5ac2a8bd-75a1-48a4-8264-74a851a06767" /></td>
<td align="center"><img height="200" alt="modem73 over HF with an IC-7300" src="https://github.com/user-attachments/assets/27fe5f6d-3650-422b-ac52-3ca04b6b1469" /></td>
</tr>
<tr>
<td align="center"><sub>Running on a UV-K6 with an All-In-One Audio Cable (AIOC)</sub></td>
<td align="center"><sub>Running natively on a Xiegu X6100 with Armbian</sub></td>
<td align="center"><sub>Running over HF with an ICOM-7300</sub></td>
</tr>
</table>



SSB, AM, and FM are all supported. It's plug and play compatible with any KISS application and works with rigctl, CM108 sound devices, and serial PTT out of the box.

There are three modem families each suited for covering any possible RF setup from clean line of sight FM links to poor HF band conditions. The receiver decodes all of them at the same time, so one station can hear anything another station sends without switching modes. The modem type can be changed under [ CONFIG ] -> Modem or via the control port

OFDM, based on the open source COFDMTV modem developed by Ahmet Inan / aicodix GmbH. Modulations from BPSK to QAM4096 with code rates from 1/4 to 5/6 and payloads from 256 to 6144 bytes per frame. Rates run from about 790 bits per second to over 13 kilobits per second in the same 2400 Hz.

ROBUST, a set of slow modes built for fading HF paths such as 40 and 80 meter NVIS. Five modes from 1150 bps down to 149 bps in either 2400 Hz or a 600 Hz narrow variant

MFSK, a non-coherent mode for weak signal propagation and backup links.


On VHF/UHF FM, use any OFDM mode.

On good HF SSB paths, use OFDM at 8PSK 1/2 or below depending on your signal budget

On fading/weaker HF paths, use ROBUST modes. For very weak signals or as a backup use MFSK.

Features

• KISS over TCP so it works with anything that speaks KISS: APRS clients, HamIRC, packet BBS software, Reticulum, custom applications
• JSON control port API for status and configuration for writing your own programs
• lightweight UI that runs straight from the terminal and headless mode for embedded use

Installation

Want to try out a demo of modem73 directly from your browser? Try it out here:
https://rfnexus.github.io/modem73-wasm-demo/
Hit "Start microphone" to begin decoding


Windows?
Experimental Windows fork: https://github.com/RFnexus/modem73-win | Releases: https://github.com/RFnexus/modem73-win/releases/

It's recommended to use modem73 with WSL instead

Building from source

Linux

On a system with T383838apt? Run the installer script:
T282828
./install.sh

1. Install dependencies

T282828
# Debian/Ubuntu/Pi
sudo apt install git build-essential libncurses-dev g++


Optional Addons


CM108 USB PTT Support

CM108-based USB audio interfaces have GPIO pins that can be used for PTT control. To enable CM108 support, install libhidapi-dev before building. The Makefile will auto-detect it and enable the feature.
T282828
# Debian/Ubuntu/Pi - install before building
sudo apt install libhidapi-dev
2. Clone aiocdix DSP libraries and build.



T282828
# Clone modem73

git clone https://github.com/RFnexus/modem73

# Build

cd modem73
make

# Optional: move to /usr/local/bin
sudo make install

and run T383838./modem73

Running & Operations

By default, MODEM73 will listen on port 8001

All of the modes provided by the OFDM modem require a bandwidth of 2400 Hz and work over both FM and SSB.

There are currently five PTT options:
• NONE (speaker/mic over the air)
• Rigctl
• VOX
• Serial
• CM108


T282828
# Start in UI mode
./modem73

# Start in headless mode
./modem73 --headless

# See all options with:
./modem73 --help

PTT options

T282828
# Connect to rigctld for PTT control
./modem73 --rigctl localhost:4532

while running T383838rigctld


T282828
./modem73 --ptt vox --vox-freq 1200 --vox-lead 500 --vox-tail 150
# 500ms vox lead and 150ms vox tail


T282828
./modem73 --ptt com --com-port /dev/ttyUSB0 --com-line rts

T282828
# CM108 USB audio interface PTT (GPIO3 is the default)
./modem73 --ptt cm108 --cm108-gpio 3

Control port

A control port for modem73 will automatically start on port T3838388073 by default. View T383838CONTROL_PORT.md for the full JSON spec

Usage

All In One Audio Cable (AIOC)
modem73 supports the AIOC out of the box. To use the All In One Audio cable, set PTT to COM, specify your COM port, and set PTT line to T383838BOTH and Invert to T383838INVERT RTS. Make sure you have the correct permissions and T383838/dev/xxxx specified. The AIOC on most setups will be /dev/ttyACMx (where x is 0, 1, 2). Note that it may change after a device restart, plugging it back in, etc.

rigctl
modem73 supports Hamlib and rigctl for any rigctl supported radio for PTT. Set rigctl to your options and run T383838rigctld -m (your model) -s (serial baud rate) -r /dev/XXXX) The T383838d at the end of T383838rigctl tells rigctl to run in network mode, which is what modem73 will connect to.

Reticulum
Want to use modem73 with Reticulum? Check out the modem73interface
https://github.com/RFnexus/modem73interface

Drop it into T383838~/.reticulum/interfaces/ and in your Reticulum config, add something like:
T282828
[[MODEM73]]
type = Modem73Interface
enabled = yes
target_host = 127.0.0.1
target_port = 8001
control_host = 127.0.0.1
control_port = 8073




Updating

modem73 comes included with a update utility T383838update.sh

To update to the latest version:
T282828
./update.sh

Served by rngit 1.2.7 - Generated in 0.02s